/*
 * Auto generated C++ header for Mass Effect 2.
 *	by _silencer.
 */

#ifndef UNREAL_SDK_GAME_SFXGameContent_Inventory_H
#define UNREAL_SDK_GAME_SFXGameContent_Inventory_H

#include "unreal_game_global.h"

namespace game
{
	using namespace unreal;

	class SFXDamageType_AssaultRifle: public SFXDamageType_Weapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_AssaultRifle, SFXDamageType_Weapon, SFXGameContent_Inventory )

	public:
	};

	class SFXWeapon_AssaultRifle: public SFXWeapon_AssaultRifle_Base
	{
		DECLARE_PACKAGE_CLASS( SFXWeapon_AssaultRifle, SFXWeapon_AssaultRifle_Base, SFXGameContent_Inventory )

	public:

		Bool bPlayingMuzzleFlashEffect: 1; //offset = 1916, size = 4
		Int ShotsTillMissTracer; //offset = 1920, size = 4

		AnimNodeSequence* GetWeaponAnimNodeSeq(, SkeletalMeshComponent* SkelMesh, AnimNodeSequence* AnimSeq );
		WwiseEvent* GetWeaponSpecificImpactSound( SFXPhysicalMaterialImpactSounds* ImpactSounds );
		ParticleSystem* GetWeaponSpecificImpactEffect( SFXPhysicalMaterialImpactEffects* ImpactEffects );
		DecalComponent* GetWeaponSpecificDecalData( SFXPhysicalMaterialDecals* DecalEffects, Float FadeTime, Int DecalLength );
		void StopMuzzleFlashEffect();
		void PlayFireEffects( Byte FiringMode, Vector HitLocation );
		void PlayMuzzleFlashEffect();
		Bool ShouldSpawnTracerFX();
	};

	class SFXDamageType_Shotgun: public SFXDamageType_Weapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_Shotgun, SFXDamageType_Weapon, SFXGameContent_Inventory )

	public:
	};

	class SFXWeapon_Shotgun: public SFXWeapon_Shotgun_Base
	{
		DECLARE_PACKAGE_CLASS( SFXWeapon_Shotgun, SFXWeapon_Shotgun_Base, SFXGameContent_Inventory )

	public:

		Float fZoomAccuracyBonus; //offset = 1916, size = 4
		Float StartTraceAdjustDist; //offset = 1920, size = 4
		Array<Vector2D> PelletSpread; //offset = 1924, size = 12

		WwiseEvent* GetWeaponSpecificImpactSound( SFXPhysicalMaterialImpactSounds* ImpactSounds );
		ParticleSystem* GetWeaponSpecificImpactEffect( SFXPhysicalMaterialImpactEffects* ImpactEffects );
		DecalComponent* GetWeaponSpecificDecalData( SFXPhysicalMaterialDecals* DecalEffects, Float FadeTime, Int DecalLength );
		void FirePellets( Vector StartLocation, Rotator AimRotation, Byte FireMode, Vector EndTrace, Array<ImpactInfo> ImpactList, ImpactInfo RealImpact, Int PelletIdx, Int idx, Rotator AimRot, Bool bAudioWasSuppressed, Bool bTracersWereSuppressed, Bool bImpactsWereSuppressed, Actor* Target );
		void DrawDebugShotgunCone( Vector StartLocation, Rotator AimRot, Float ConeAngleRad );
		void CustomFire( BioPlayerController* PC, Vector StartTrace, Rotator AimRot );
		Bool ShouldSpawnTracerFX();
	};

	class SFXDamageType_SniperRifle: public SFXDamageType_Weapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_SniperRifle, SFXDamageType_Weapon, SFXGameContent_Inventory )

	public:
	};

	class SFXWeapon_SniperRifle: public SFXWeapon_SniperRifle_Base
	{
		DECLARE_PACKAGE_CLASS( SFXWeapon_SniperRifle, SFXWeapon_SniperRifle_Base, SFXGameContent_Inventory )

	public:

		WwiseEvent* ActivateSniperZoomWwiseEvent; //offset = 1916, size = 4
		WwiseEvent* DeActivateSniperZoomWwiseEvent; //offset = 1920, size = 4

		void SetZoomed( Bool bState );
		WwiseEvent* GetWeaponSpecificImpactSound( SFXPhysicalMaterialImpactSounds* ImpactSounds );
		ParticleSystem* GetWeaponSpecificImpactEffect( SFXPhysicalMaterialImpactEffects* ImpactEffects );
		DecalComponent* GetWeaponSpecificDecalData( SFXPhysicalMaterialDecals* DecalEffects, Float FadeTime, Int DecalLength );
	};

	class SFXDamageType_HeavyPistol: public SFXDamageType_Weapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_HeavyPistol, SFXDamageType_Weapon, SFXGameContent_Inventory )

	public:
	};

	class SFXWeapon_HeavyPistol: public SFXWeapon_HeavyPistol_Base
	{
		DECLARE_PACKAGE_CLASS( SFXWeapon_HeavyPistol, SFXWeapon_HeavyPistol_Base, SFXGameContent_Inventory )

	public:

		WwiseEvent* GetWeaponSpecificImpactSound( SFXPhysicalMaterialImpactSounds* ImpactSounds );
		ParticleSystem* GetWeaponSpecificImpactEffect( SFXPhysicalMaterialImpactEffects* ImpactEffects );
		DecalComponent* GetWeaponSpecificDecalData( SFXPhysicalMaterialDecals* DecalEffects, Float FadeTime, Int DecalLength );
	};

	class SFXDamageType_HeavyWeapon: public SFXDamageType_Weapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_HeavyWeapon, SFXDamageType_Weapon, SFXGameContent_Inventory )

	public:
	};

	class SFXDamageType_Grenade: public SFXDamageType_HeavyWeapon
	{
		DECLARE_PACKAGE_CLASS( SFXDamageType_Grenade, SFXDamageType_HeavyWeapon, SFXGameContent_Inventory )

	public:
	};

	class SFXHeavyWeapon_GrenadeLauncher: public SFXHeavyWeapon
	{
		DECLARE_PACKAGE_CLASS( SFXHeavyWeapon_GrenadeLauncher, SFXHeavyWeapon, SFXGameContent_Inventory )

	public:
	};

	class SFXProjectile_Grenade: public SFXProjectile_Explosive
	{
		DECLARE_PACKAGE_CLASS( SFXProjectile_Grenade, SFXProjectile_Explosive, SFXGameContent_Inventory )

	public:

		BioPawn* WeaponOwner; //offset = 688, size = 4
		SFXHeavyWeapon* Weapon; //offset = 692, size = 4
		Actor* AcquiredTarget; //offset = 696, size = 4
		Float MaxAngleChange; //offset = 700, size = 4

		void Recycle();
		void DoImpact( Actor* InImpactedActor, Controller* InInstigatorController, Float BaseDamage, Float InDamageRadius, Float Momentum, Vector HurtOrigin, Bool bFullDamage, BioPawn* HitPawn, Float RandomNumber, Array<Byte> Parts );
		void Tick( Float DeltaTime, Vector DesiredOrientation, Vector CurrentOrientation, Float fAngle, Float fTargetVelocity, Float fAngleChange );
		Vector GetAimLocation(, Vector NodeLocation, BioPawn* oPawn );
		void Init( Vector Direction, BioPlayerController* PC );
	};
}

#endif
